package src.itheima01;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

/*


        public int read(byte[] bs): 读取一个字节数组
            读取多个字节的内容,把读取到的多个字节存储方法参数字节数组bs中,返回的是读取的字节的数量
            遇到文件结束标志,返回-1,不用继续读取文件了
            参数:
                byte[] bs: 字节数组,用来存储读取到的多个字节的内容的
            返回值类型:
                int:   读取的字节的数量

        步骤:
            1.创建文件字节输入流FileInputStream类的对象fis,绑定源文件
            2.文件字节输入流FileInputStream类的对象fis调用read方法,读取文件中的内容
            3.文件字节输入流FileInputStream类的对象fis调用close方法,关闭流释放资源

        问题:
            如何把字节数组,变成字符串?
            String的构造方法
            public String(byte[] bs): 把构造方法参数,字节数组变成字符串
            public String(char[] chs): 把构造方法参数,字符数组变成字符串
 */
public class Demo02InputStream {
    public static void main(String[] args) throws IOException {
        //1.创建文件字节输入流FileInputStream类的对象fis,绑定源文件
        FileInputStream fis = new FileInputStream("day11\\fis2.txt");

        //2.文件字节输入流FileInputStream类的对象fis调用read方法,读取文件中的内容

        //定义字节数组: 每次读取或存储多少个字节内容
        byte[] bs = new byte[2];

        //定义int变量,存储每次读取到的字节的数量
        int len = 0;

        //从fis关联的文件中,读取多个字节存储到字节数组bs中,返回读取的字节的数量,赋值给len
        //最后判断len的值是否等于-1
        while((len = fis.read(bs))!=-1) {
            System.out.println(len);
            //把字节数组bs中的内容,把索引0后面的len个字节,变成字符串
            System.out.println(new String(bs,0,len));
            /*System.out.println(fis.read(bs));*/
        }

        //3.文件字节输入流FileInputStream类的对象fis调用close方法,关闭流释放资源
        fis.close();

    }
    //原始代码
    private static void method() throws IOException {
        //1.创建文件字节输入流FileInputStream类的对象fis,绑定源文件
        FileInputStream fis = new FileInputStream("day11\\fis2.txt");

        //2.文件字节输入流FileInputStream类的对象fis调用read方法,读取文件中的内容

        //定义字节数组: 每次读取或存储多少个字节内容
        byte[] bs = new byte[2];

        //定义int变量,存储每次读取到的字节的数量
        int len = 0;

        len = fis.read(bs);
        System.out.println("第一次读取的字节数: "+len);//2
        System.out.println("第一次读取的字节内容: "+ new String(bs,0,len));//ab

        len = fis.read(bs);
        System.out.println("第二次读取的字节数: "+len);//2
        System.out.println("第二次读取的字节内容: "+ new String(bs,0,len));//cd

        len = fis.read(bs);
        System.out.println("第三次读取的字节数: "+len);//1
        System.out.println("第三次读取的字节内容: "+ new String(bs,0,len));//ed

        len = fis.read(bs);
        System.out.println("第四次读取的字节数: "+len);//-1
        //System.out.println("第四次读取的字节内容: "+ new String(bs,0,len));//ed

        //3.文件字节输入流FileInputStream类的对象fis调用close方法,关闭流释放资源
        fis.close();
    }

}
